package com.uvnos4j.matilda.system.service;

import com.uvnos4j.matilda.system.domain.SysAcl;
import com.uvnos4j.matilda.system.domain.SysUser;

import java.util.List;

/**
 * 系统authService
 *
 * @author Guo.wl
 */
public interface SysAuthService {

    /**
     * 根据用户及其所选角色构建角色权限树
     *
     * @param user   用户对象
     * @param roleId 角色ID
     * @return 标识用户和角色的权限集合
     */
    List<SysAcl> buildRoleAclTree(SysUser user, Long roleId);

    /**
     * 保存角色权限
     *
     * @param roleId    角色ID
     * @param aclIdList 权限ID列表
     */
    void saveRoleAcls(Long roleId, List<Long> aclIdList);

    /**
     * 根据roleId查找拥有该角色的用户列表
     *
     * @param roleId roleId
     * @return 拥有角色的用户列表
     */
    List<SysUser> findRoleUserList(Long roleId);

    /**
     * 根据roleId查找未分配该角色的用户列表
     *
     * @param roleId roleId
     * @return 未分配该角色的用户列表
     */
    List<SysUser> findRoleNoUserList(Long roleId);

    /**
     * 保存用户角色
     *
     * @param roleId     roleId
     * @param userIdList 用户Id列表
     */
    void saveRoleUsers(Long roleId, List<Long> userIdList);

}